/**
 * uni-app 存储适配器
 * @description 适配 vuex-persistedstate 插件和通用存储需求
 */
export const storage = {
  // vuex-persistedstate 需要的方法
  getItem(key) {
    try {
      const value = uni.getStorageSync(key)
      return value ? JSON.parse(value) : null
    } catch (e) {
      console.error('获取存储失败：', e)
      return null
    }
  },
  setItem(key, value) {
    try {
      const data = JSON.stringify(value)
      uni.setStorageSync(key, data)
    } catch (e) {
      console.error('设置存储失败：', e)
      // 如果存储失败，尝试清除后重试
      try {
        uni.removeStorageSync(key)
        const data = JSON.stringify(value)
        uni.setStorageSync(key, data)
      } catch (retryError) {
        console.error('重试存储失败：', retryError)
      }
    }
  },
  removeItem(key) {
    try {
      uni.removeStorageSync(key)
    } catch (e) {
      console.error('删除存储失败：', e)
    }
  },
  clear() {
    try {
      uni.clearStorageSync()
    } catch (e) {
      console.error('清除存储失败：', e)
    }
  },

  // 兼容方法 - 简化的存储操作
  get(key) {
    try {
      return uni.getStorageSync(key) || null
    } catch (e) {
      console.error('获取存储失败：', e)
      return null
    }
  },
  set(key, value) {
    try {
      uni.setStorageSync(key, value)
    } catch (e) {
      console.error('设置存储失败：', e)
    }
  },
  remove(key) {
    try {
      uni.removeStorageSync(key)
    } catch (e) {
      console.error('删除存储失败：', e)
    }
  }
}
